Description: Port to GSettings.
Bug-Debian: https://bugs.debian.org/885817
Author: Yavor Doganov <yavor@gnu.org>
Forwarded: gnomint-devel@lists.sourceforge.net
Last-Update: 2019-10-15
---

--- gnomint-1.3.0.orig/configure.ac
+++ gnomint-1.3.0/configure.ac
@@ -61,7 +61,6 @@
 GNUTLS_ADVANCED_FEATURES_MINIMUM_VERSION=2.7.4
 SQLITE_REQUIRED=3.0
 GLIB_REQUIRED=2.6.0
-GCONF_REQUIRED=2.0
 GTK_REQUIRED=2.12.0
 ISO_CODES_REQUIRED=0.35
 
@@ -84,7 +83,6 @@
 PKG_CHECK_MODULES(GNOMINT, 
 	glib-2.0 >= $GLIB_REQUIRED \
 	gthread-2.0 >= $GLIB_REQUIRED \
-	gconf-2.0 >= $GCONF_REQUIRED \
 	gtk+-2.0 >= $GTK_REQUIRED \
 	gdk-pixbuf-2.0 \
 	gnutls >= $GNUTLS_REQUIRED \
@@ -111,8 +109,7 @@
 AC_SUBST(READLINE_LIBS)
 
 PKG_CHECK_MODULES(GNOMINTCLI, 
-	glib-2.0 >= $GLIB_REQUIRED \
-	gconf-2.0 >= $GCONF_REQUIRED \
+	gio-2.0 >= $GLIB_REQUIRED \
 	gnutls >= $GNUTLS_REQUIRED \
 )
 AC_SUBST(GNOMINTCLI_CFLAGS)
@@ -150,17 +147,7 @@
 GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
 AC_SUBST(GLIB_GENMARSHAL)
 
-dnl The following conditional is set in AM_GCONF_SOURCE_2.
-dnl Because we may skip its execution, we have to set a default here.
-m4_pattern_allow([^AM_GCONF_SOURCE_2$])
-AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [false])
-GCONFTOOL=""
-AC_CHECK_PROG(GCONFTOOL, gconftool-2, gconftool-2)
-if test x"$GCONFTOOL" = x; then
-	AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf])
-fi
-AM_GCONF_SOURCE_2
-
+GLIB_GSETTINGS
 
 dnl
 dnl Check if src should be build with the debug mode
--- gnomint-1.3.0.orig/gconf/Makefile.am
+++ gnomint-1.3.0/gconf/Makefile.am
@@ -1,21 +1,5 @@
-schemasdir = @GCONF_SCHEMA_FILE_DIR@
-schemas_in_files = gnomint.schemas.in
-schemas_DATA = $(schemas_in_files:.schemas.in=.schemas)
+gsettings_SCHEMAS = net.sf.gnomint.gschema.xml
 
-@INTLTOOL_SCHEMAS_RULE@
+@GSETTINGS_RULES@
 
-EXTRA_DIST = $(schemas_in_files)
-
-CLEANFILES = $(schemas_DATA)
-
-if GCONF_SCHEMAS_INSTALL
-# don't do this if we are building in eg. rpm
-install-data-local: $(schemas_DATA)
-	if test -z "$(DESTDIR)" ; then \
-		for p in $(schemas_DATA) ; do \
-			GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $$p; \
-		done \
-	fi
-else
-install-data-local:
-endif
+EXTRA_DIST = $(gsettings_SCHEMAS)
--- gnomint-1.3.0.orig/src/preferences-gui.h
+++ gnomint-1.3.0/src/preferences-gui.h
@@ -20,6 +20,8 @@
 #ifndef _PREFERENCES_H_
 #define _PREFERENCES_H_
 
+#include <gio/gio.h>
+
 typedef void (* PreferencesGuiChangeCallback) (gboolean, gboolean);
 
 void preferences_gui_set_csr_visible_callback (PreferencesGuiChangeCallback callback);
@@ -43,10 +45,8 @@
 void preferences_deinit (void);
 
 
-#include <gconf/gconf-client.h>
-void preferences_changed_callback(GConfClient* client,
-                                  guint cnxn_id,
-                                  GConfEntry *entry,
+void preferences_changed_callback(GSettings* settings,
+                                  gchar *key,
                                   gpointer user_data);
 
 
--- gnomint-1.3.0.orig/src/preferences-gui.c
+++ gnomint-1.3.0/src/preferences-gui.c
@@ -18,7 +18,6 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 #include <string.h>
-#include <gconf/gconf-client.h>
 
 
 #include "preferences-gui.h"
@@ -26,7 +25,7 @@
 #include <glib/gi18n.h>
 
 
-static GConfClient * preferences_client;
+static GSettings * preferences;
 
 PreferencesGuiChangeCallback csr_visible_callback = NULL;
 PreferencesGuiChangeCallback revoked_visible_callback = NULL;
@@ -42,18 +41,19 @@
 }
 
 
-void preferences_changed_callback(GConfClient* client,
-                                  guint cnxn_id,
-                                  GConfEntry *entry,
+void preferences_changed_callback(GSettings* settings,
+                                  gchar *key,
                                   gpointer user_data)
 {
 
-        gboolean value = gconf_value_get_bool (gconf_entry_get_value(entry));
-        if (! strcmp (gconf_entry_get_key(entry), "/apps/gnomint/crq_visible") && csr_visible_callback)
-                csr_visible_callback (value, TRUE);
-
-        if (! strcmp (gconf_entry_get_key(entry), "/apps/gnomint/revoked_visible") && revoked_visible_callback)
-                revoked_visible_callback (value, TRUE);
+        if (! strcmp (key, "crq-visible") && csr_visible_callback)
+                csr_visible_callback (g_settings_get_boolean (settings, key),
+                                      TRUE);
+
+        if (! strcmp (key, "revoked-visible") && revoked_visible_callback)
+                revoked_visible_callback (g_settings_get_boolean
+                                          (settings, key),
+                                          TRUE);
 
 }
 
@@ -61,72 +61,62 @@
 
 void preferences_init (int argc, char ** argv)
 {
-        gconf_init(argc, argv, NULL);
-        
-        preferences_client = gconf_client_get_default();
-
-        gconf_client_add_dir(preferences_client,
-                             "/apps/gnomint",
-                             GCONF_CLIENT_PRELOAD_NONE,
-                             NULL);
-
-        gconf_client_notify_add (preferences_client, "/apps/gnomint/revoked_visible",
-                                 preferences_changed_callback,
-                                 NULL, NULL, NULL);
-
-        gconf_client_notify_add (preferences_client, "/apps/gnomint/crq_visible",
-                                 preferences_changed_callback,
-                                 NULL, NULL, NULL);
-
+        preferences = g_settings_new ("net.sf.gnomint");
 
+        g_signal_connect (preferences, "changed",
+                          G_CALLBACK (preferences_changed_callback), NULL);
 }
 
 
 gchar * preferences_get_size ()
 {
-        return gconf_client_get_string (preferences_client, "/apps/gnomint/size", NULL);
+        return g_settings_get_string (preferences, "size");
 }
 
 void preferences_set_size (const gchar *new_value)
 {
-        gconf_client_set_string (preferences_client, "/apps/gnomint/size", new_value, NULL);
+        g_settings_set_string (preferences, "size", new_value);
+        /* Make sure the backend manages to write the setting,
+           otherwise the program exits too quickly and a garbage value
+           gets written, leading to a crash on next startup.  */
+        g_settings_sync ();
 }
 
 
 gboolean preferences_get_revoked_visible ()
 {
-        return gconf_client_get_bool (preferences_client, "/apps/gnomint/revoked_visible", NULL);
+        return g_settings_get_boolean (preferences, "revoked-visible");
 }
 
 void preferences_set_revoked_visible (gboolean new_value)
 {
-        gconf_client_set_bool (preferences_client, "/apps/gnomint/revoked_visible", new_value, NULL);
+        g_settings_set_boolean (preferences, "revoked-visible", new_value);
 }
 
 gboolean preferences_get_crq_visible ()
 {
-        return gconf_client_get_bool (preferences_client, "/apps/gnomint/crq_visible", NULL);
+        return g_settings_get_boolean (preferences, "crq-visible");
 }
 
 void preferences_set_crq_visible (gboolean new_value)
 {
-        gconf_client_set_bool (preferences_client, "/apps/gnomint/crq_visible", new_value, NULL);
+        g_settings_set_boolean (preferences, "crq-visible", new_value);
 }
 
 gboolean preferences_get_gnome_keyring_export ()
 {
-        return gconf_client_get_bool (preferences_client, "/apps/gnomint/gnome_keyring_export", NULL);
+        return g_settings_get_boolean (preferences, "gnome-keyring-export");
 }
 
 void preferences_set_gnome_keyring_export (gboolean new_value)
 {
-        gconf_client_set_bool (preferences_client, "/apps/gnomint/gnome_keyring_export", new_value, NULL);
+        g_settings_set_boolean (preferences, "gnome-keyring-export", new_value);
 }
 
 
 void preferences_deinit ()
 {
-        g_object_unref (preferences_client);
-        preferences_client = NULL;
+        g_object_unref (preferences);
+        preferences = NULL;
 }
 
--- gnomint-1.3.0.orig/src/preferences.c
+++ gnomint-1.3.0/src/preferences.c
@@ -18,36 +18,35 @@
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 #include <libintl.h>
-#include <gconf/gconf-client.h>
+#include <gio/gio.h>
 
 #include <glib/gi18n.h>
 
 #include "preferences.h"
 
 
-static GConfEngine * preferences_engine;
+static GSettings * preferences;
 
 void preferences_init (int argc, char **argv)
 {
-        gconf_init (argc, argv, NULL);
-        preferences_engine = gconf_engine_get_default ();
+        preferences = g_settings_new ("net.sf.gnomint");
 }
 
 
 gboolean preferences_get_gnome_keyring_export ()
 {
-        return gconf_engine_get_bool (preferences_engine, "/apps/gnomint/gnome_keyring_export", NULL);
+        return g_settings_get_boolean (preferences, "gnome-keyring-export");
 }
 
 void preferences_set_gnome_keyring_export (gboolean new_value)
 {
-        gconf_engine_set_bool (preferences_engine, "/apps/gnomint/gnome_keyring_export", new_value, NULL);
+        g_settings_set_boolean (preferences, "gnome-keyring-export", new_value);
 }
 
 
 void preferences_deinit ()
 {
-        gconf_engine_unref (preferences_engine);
-        preferences_engine = NULL;
+        g_object_unref (preferences);
+        preferences = NULL;
 }
 
--- gnomint-1.3.0.orig/gconf/gnomint.schemas.in
+++ /dev/null
@@ -1,58 +0,0 @@
-<gconfschemafile>
-  <schemalist>
-    <schema>
-      <key>/schemas/apps/gnomint/size</key>
-      <applyto>/apps/gnomint/size</applyto>
-      <owner>gnomint</owner>
-      <type>string</type>
-      <default>(500,400)</default>
-      <locale name="C">
-        <short>Window size</short> <long>The (width,length) size
-        gnoMint should take when started. This cannot be smaller than
-        (320,200).
-        </long>
-      </locale>
-    </schema>
- 
-    <schema>
-      <key>/schemas/apps/gnomint/revoked_visible</key>
-      <applyto>/apps/gnomint/revoked_visible</applyto>
-      <owner>gnomint</owner>
-      <type>bool</type>
-      <default>0</default>
-      <locale name="C">
-        <short>Revoked certificates visibility</short>
-        <long>Whether the revoked certificates should be visible.
-        </long>
-      </locale>
-    </schema>
-
-    <schema>
-      <key>/schemas/apps/gnomint/crq_visible</key>
-      <applyto>/apps/gnomint/crq_visible</applyto>
-      <owner>gnomint</owner>
-      <type>bool</type>
-      <default>1</default>
-      <locale name="C">
-        <short>Certificate requests visibility</short>
-        <long>Whether the certificate requests should be visible.
-        </long>
-      </locale>
-    </schema>
-
-    <schema>
-      <key>/schemas/apps/gnomint/gnome_keyring_export</key>
-      <applyto>/apps/gnomint/gnome_keyring_export</applyto>
-      <owner>gnomint</owner>
-      <type>bool</type>
-      <default>1</default>
-      <locale name="C">
-        <short>Automatic exporting of certificates for gnome-keyring</short>
-        <long>Whether the created or imported certificates are
-        automatically exported to gnome-keyring certificate-store.
-        </long>
-      </locale>
-    </schema>
-
-  </schemalist>
-</gconfschemafile>
--- /dev/null
+++ gnomint-1.3.0/gconf/net.sf.gnomint.gschema.xml
@@ -0,0 +1,30 @@
+<schemalist gettext-domain="gnomint">
+  <schema id="net.sf.gnomint" path="/net/sf/gnomint/">
+    <key name="size" type="s">
+      <default>'(500,400)'</default>
+      <summary>Window size</summary>
+      <description>The (width,length) size gnoMint should take when
+      started. This cannot be smaller than (320,200).</description>
+    </key>
+    <key name="revoked-visible" type="b">
+      <default>false</default>
+      <summary>Revoked certificates visibility</summary>
+      <description>Whether the revoked certificates should be
+      visible.</description>
+    </key>
+    <key name="crq-visible" type="b">
+      <default>true</default>
+      <summary>Certificate requests visibility</summary>
+      <description>Whether the certificate requests should be
+      visible.</description>
+    </key>
+    <key name="gnome-keyring-export" type="b">
+      <default>true</default>
+      <summary>Automatic exporting of certificates for
+      gnome-keyring</summary>
+      <description>Whether the created or imported certificates are
+      automatically exported to gnome-keyring
+      certificate-store.</description>
+    </key>
+  </schema>
+</schemalist>
